Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 5
з курсу „ Теорія колективної поведінки інтелектуальних систем ”
Тема:
Адаптивне управління
Виконав:
ст. гр. КІ-4
Львів – 2005
Мета: Ознайомитись з принципами адаптивного управління з механізмом наслідування.
Загальні відомості
Розглянемо N агентів, які розміщенні в середовищі E і одночасно в дискретні моменти часу реалізують кожний по одній дії з набору D={d1,d2,…} усіх доступних дій в цьому середовищі. Після цього кожний агент отримує відгук середовища (значення функції оцінки) ut,i, i=1,…,N і пов’язує його з дією dkt,i. (dkt,i, ut,i) При цьому значення {ut,i} можуть бути різними, в залежності від того яку дію реалізував агент та (можливо) в якій точці середовища він знаходиться.
Модель інформаційної зв’язності. В кожному такті агенти випадковим чином розбиваються на пари, в яких відбувається обмін значеннями (dkt,i, ut,i). Цільова функція колективу дорівнює сумі індивідуальних виграшів агентів.
Схема адаптивного управління з механізмом наслідування (варіант):
Кожний агент (Ai) виконує наступні два правила:
1) Якщо ut,i > ut,j, i¹j, то повторити успішну дію (dkt+1,i = dkt,i)
2) Якщо ut,i < ut,j, i¹j, то з ймовірністю p1 повторити дію "опонента" (dkt+1,i = dkt,j) і з ймовірністю p2 випадково обрати будь-яку дію з набору доступних дій D.
При цьому p1 + p2 = 1. Тобто кожний агент з ймовірністю p1 наслідує інших агентів, а з ймовірністю p2 діє "самостійно". Т.ч. "успішні" агенти будуть зберігати свою дію на довгий час, а "невдахи" будуть змінювати дії, наслідуючи "успішних" агентів. В такий спосіб відбувається пристосування (адаптація) колективу до середовища.
Текст програми
/* Copyright (c) 2005 alb. All Rights Reserved. * Multiagent systems Lab
* Computer Engineering Department * Lviv Polytechnic National University
* ===============================================
* Multiagent Systems. Lab work 05. Multiagent design I: Adaptive Control.
* Here two types of multiagent systems (collectives) are implemented:
* - collective of casual agents,
* - collective of agents with adaptive control.
* With given
* set of available actions D={1,2} and
* set of possible responses R={0,1}
* 1 -> reward (win) * 0 -> punishment (loss)
* you must investigate behaviour of these two colletives
* over T interaction in specified environments. */
#include "stdafx.h"
#define NACTION 2 // number of actions, avalaible for agents
#define NAGENT 10 // number of agents in collective (MAS)
int t; // current time step
int T = 100; // maximum number of time steps (interactions with environment)
int N = NAGENT; // number of agents
int neighbor[NAGENT]; // neighbor's array
double p1 = 0.9; // imitation rate
int env_model; // environmetn code:
// 1 - envoronment with static response
// 2 - envoronment with predetermined dynamic response
// 3 - envoronment with stationary random response:
// binary bandit task (n-armed bandit, n=2)
// variables for environment's parameters
int env1; // winning action code (env_model = 1)
int env2_action1; // first winning action code (env_model = 2)
int env2_action2; // second winning action code (env_model = 2)
int max_period=6; // max period of action repetitions (env_model = 2)
int cd1 = 0; // counter for first action (env_model = 2)
int cd2 = 0; // counter for second action (env_model = 2)
int env2[2]; // periods of action repetitions (env_model = 2)
double env3[2]; // probabilities of rewards for each action (env_model = 3)
// file for saving results
char * res_file_name = "test.dat";
FILE * res_file;
int action[NAGENT]; // RL-agent current action
int response[NAGENT]; // current response of environment (can be 0 or 1)
// agent results
int R[NAGENT]; // current reward over time R(t)
int sumR[NAGENT];...